1. Field of the Invention
The present invention relates generally to computer system diagnostics and, in particular, to a computer-implemented capability for detecting the presence of individual failures in compiled computer programs that have been updated (i.e., remediated) to handle year-2000 (Y2K) dates.
2. Description of the Related Art
Computer systems used in various processing applications, such as processing insurance information, account information, inventory information, investment information, retirement information, as well as many other applications, often operate with records and data containing date-dependent information. In many computing systems, date information relating to years has been represented in two-digit year format, wherein the two digits represent a year between 1900 and 1999. Thus, for example, the digits “98” would represent the year 1998. Popular usage of this simplified date information format throughout the computer industry has resulted in an industry-recognized problem, often referred to as the “year 2000 problem” or the “Y2K” problem.
The problem results from this simplification of date information. Namely, upon the turn of the century (i.e., beginning in the year 2000), two-digit year information intended to represent a year within the twenty-first century (i.e., 2000-2099) will be indistinguishable within such computer systems from a year within the twentieth century (i.e., 1900-1999). For example, a two-digit year value of “08” which is intended to represent the year 2008 will be indistinguishable from the year 1908 by such systems. More specifically, year-2000 problems occur when calculations cross the year-2000 boundary. For example, calculating two years beyond the year 1999 (represented as “99”) yields an arithmetically correct result of 101, but a computer program may truncate this to 01 since only two digits have traditionally been allowed. As a further example, the comparison of the year 1999 (represented as “99”) against 2000 (represented as “00”) may yield the result that a date in the year 1999 is after (i.e., arithmetically greater) than the year 2000.
Various solutions to the “year-2000 problem” have been suggested. Defining the term “year-2000 compliant” as the ability to recognize accurately dates both before and after Jan. 1, 2000, there are essentially four methods of achieving software compliance that have been commonly recognized. They are: (1) date expansion; (2) clock modification; (3) windowing; and (4) date modification. Briefly, described “date expansion” directs a user to survey each computer program and database to identify every location where dates or equivalent data expressions are in use and reformat each instance to use four instead of two digits. “Clock modification” involves changing all years in an existing database and the system clock by deducting 28 years. The reason for the use of 28 is that the calendar resets itself completely every 28 years. The “windowing” technique assumes the century of a two-digit year by comparing it to an arbitrary window of 100 years as defined by a “pivot”. (As described below, a pivot is a dividing line between centuries when using two-digit year dates; for example, if the pivot is 1940, then two-digit year dates are assumed to fall in the range 1941-2040.) Finally, “date modification” involves changing the symbolic system used to represent different years so as to accommodate more than the traditional 100 numbers in the two digits allocated for that purpose. For example, letters of the alphabet can be selectively substituted for numbers to expand the representation of the two digits.
The commonly owned, copending applications of applicant Brian B. Moore, Ser. Nos. 09/136,833, entitled “METHOD FOR PREDICTING YEAR-2000 INSTRUCTION FAILURES”; 09/136,279, entitled “SYSTEM FOR PREDICTING YEAR-2000 INSTRUCTION FAILURES”; and 09/137,465, entitled “PREDICTING YEAR-2000 INSTRUCTION FAILURES”, all filed Aug. 20, 1998, and incorporated herein by reference, describe the use of trace analysis to identify year-2000 instruction failures in unremediated programs. Object-code instruction traces are employed to analyze selected instructions of an application program for possible failure when confronted by a year-2000 date. The analysis includes directly identifying one or more instructions of the application program that may fail, as well as identifying whether the one or more instructions have a characteristic of a predefined false-positive failure pattern. A failure-pattern descriptor is assigned to each examined instruction which is indicative of whether the instruction may fail when confronted by a date in the year-2000 range, and whether the instruction is a possible false-positive failing instruction. The analysis employs user-specifiable run-control values, as well as predetermined filter-specification values in comparing traces of each selected object-code instruction to predefined instruction failure patterns.
While the systems described in these copending applications are useful in identifying Y2K failures, they work with unremediated programs and do not identify remediation failures in programs that have already been remediated. Identifying such remediation failures is crucial, however, given the use of outsourcing to remediate programs. Thus, companies often send programs to independent remediators who remediate the programs using source tools, but do not give the remediators databases that allow the updated programs to be fully tested.
What is needed, therefore, are tools that independently validate or verify the proper functioning of programs that have been updated to handle year-2000 dates (i.e., after the remediated programs are received back at the originating company). Presently, however, there seem to be no tools available for this purpose.